package com.zhku.media.service;

import com.zhku.base.model.RestResponse;
import com.zhku.media.model.dto.UploadFIleParamDto;
import com.zhku.media.model.dto.UploadFileResultDto;
import com.zhku.media.model.po.MediaFiles;

import java.io.File;

public interface MediaFileService {

    /**
     * 上传文件
     *
     * @param shopId          店铺id
     * @param uploadFIleParamDto 文件信息
     * @param localFilePath      文件本地路径
     * @param objectName         如果传入objectname要按objectname的目录去存储，如果不传就按年月日目录去存储
     * @return UploadFileResultDto
     */
    public UploadFileResultDto uploadFile(String shopId, UploadFIleParamDto uploadFIleParamDto, String localFilePath,String objectName);

    /**
     * 由于在一个非事务的方法内调用一个事务方法，事务无法控制，因此需要将service本身注入为代理对象
     * 但由于事务方法并没有暴露为接口，代理对象无法进行调用，因此需要在此处将方法暴露为接口
     *
     * @param shopId
     * @param fileMd5
     * @param uploadFIleParamDto
     * @param bucket_mdiafiles
     * @param objectName
     * @return
     */
    MediaFiles addMediaFilesToDb(String shopId, String fileMd5, UploadFIleParamDto uploadFIleParamDto, String bucket_mdiafiles, String objectName);


    /**
     * 将文件上传到minio
     *
     * @param localFilePath 本地文件路径
     * @param mimeType      媒体文件类型
     * @param bucket        桶
     * @param objectName    对象名
     * @return
     */
    public boolean addMediaFilesToMinIo(String localFilePath, String mimeType, String bucket, String objectName);
}
